[Update] วิธีการใช้งานฟังก์ชัน Saved configuration ใน Elastic Beanstalk
สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ
ครั้งนี้ผมจะมาแนะนำการใช้งานฟังก์ชัน Saved configuration ใน Elastic Beanstalk โดยจะเน้นไปที่ฟังก์ชัน Saved configuration ที่อยู่ตรงเมนูด้านซ้ายใน Elastic Beanstalk ครับ
บทนำ
เราสามารถใช้ฟังก์ชัน Saved configuration บันทึกข้อมูลการตั้งค่าของแต่ละสภาพแวดล้อมได้ โดยเฉพาะ Environment ที่มีการตั้งค่าซับซ้อน ก็สามารถใช้ฟังก์ชันนี้ในการสร้าง Environment เดิมหรือปรับเปลี่ยนสภาพ Environment ที่กำลังใช้งานอยู่ได้
การ Saved configuration
ผมได้ทำการ Saved configuration ไว้ก่อนหน้านี้แล้ว โดยใช้ชื่อ Configuration name: single
ดูตัวอย่างได้ที่ลิงก์บทความนี้ครับ
การ [Load] Saved configuration เพื่อปรับสภาพ Environment
ขั้นตอนนี้คือการใช้ Saved configuration เปลี่ยนสภาพ Environment อื่นที่กำลังใช้งานอยู่
วิธีเข้ามาที่ Saved configuration
เข้ามาที่ Service Elastic Beanstalk
แล้วเลือก Applications
จากเมนูด้านซ้าย
แล้วค้นหาและคลิกเข้าไปที่ชื่อของเรา เช่น tinnakorn
แล้วดูที่เมนูด้านซ้าย จะเห็นว่าแสดงเป็นชื่อ Application ของเรา ในตัวอย่างนี้คือ ▼ Application: tinnakorn
ทีนี้ให้เลือก Saved configuration
การ Load Saved configuration ให้กับ Environment
ติ๊ก ✅
ตรง Configuration name ที่ต้องการนำไปใช้ เช่น single
และคลิก Load
เลือก Environment ที่ต้องการ และคลิก Load
แล้วรอระบบอัปเดตสักครู่
การสร้าง Environment จาก Saved configuration
เข้ามาที่ Saved configurations ของเรา
แล้วติ๊ก ✅
Configuration name ที่ต้องการใช้สร้าง Environment ซ้ำ และคลิก Launch evironment
แล้วตั้งค่า Environment ตามความเหมาะสมกับงานของเราได้เลย
ข้อควรระวัง: หาก Key Pair หรือ Security Group ที่อยู่ในการตั้งค่า Saved configuration หายไป จะไม่สามารถ Create enviroment ได้ ดังนั้นหากต้องการลบ Key Pair กับ Security Group กรุณาตรวจสอบว่าไม่ซ้ำกับการตั้งค่าที่มีอยู่ใน Saved configuration ด้วย
ตรวจสอบที่บันทึกไฟล์จริงของ Saved configuration ว่าอยู่ที่ไหน
เข้ามาที่ Service S3
แล้วเลือก Buckets
จากเมนูด้านซ้าย
จากนั้นค้นหาและเลือก Buckets: elasticbeanstalk-[region]-[aws-account-id]
คลิกเข้าไปที่ Path: resources/templates/[application-name]
จะเห็นว่ามีไฟล์ของแต่ละสภาพแวดล้อมอยู่ในนี้ แต่ในตัวอย่างนี้มีแค่ไฟล์ single
เพราะผมทำการ Saved configurations ไว้แค่ไฟล์เดียว
ดาวน์โหลดไฟล์ของ Saved configurations
ติ๊ก ✅
ไฟล์ที่ต้องการดาวน์โหลด และคลิก Download
ไฟล์ที่ได้มาเป็นไฟล์ตั้งค่ารูปแบบ YAML
จากนั้นลองเปิดไฟล์ที่ดาวน์โหลดมา จะเห็นว่ามีข้อมูลการตั้งค่าถูกบันทึกลงในไฟล์นี้ทั้งหมด
File: single (คลิกดูตัวอย่างข้อมูลไฟล์ที่นี่)
EnvironmentConfigurationMetadata:
DateCreated: '1719544543000'
DateModified: '1719544543000'
Platform:
PlatformArn: arn:aws:elasticbeanstalk:ap-southeast-1::platform/PHP 8.2 running on
64bit Amazon Linux 2023/4.2.0
OptionSettings:
aws:elasticbeanstalk:container:php:phpini:
document_root: /public
aws:ec2:instances:
SpotFleetOnDemandAboveBasePercentage: '0'
InstanceTypes: t3a.nano
aws:elasticbeanstalk:application:environment:
DB_HOST: [host]
DB_DATABASE: laravel
DB_PASSWORD: [********]
aws:elasticbeanstalk:environment:
ServiceRole: arn:aws:iam::[aws-account-id]:role/aws-elasticbeanstalk-service-role
EnvironmentType: SingleInstance
LoadBalancerType: application
aws:elasticbeanstalk:healthreporting:system:
ConfigDocument:
Version: 1
CloudWatchMetrics:
Instance: {}
Environment: {}
Rules:
Environment:
ELB:
ELBRequests4xx:
Enabled: true
Application:
ApplicationRequests4xx:
Enabled: true
aws:autoscaling:launchconfiguration:
RootVolumeSize: '10'
EC2KeyName: [key-pair-name]
RootVolumeType: gp2
AWSEBAutoScalingLaunchConfiguration.aws:autoscaling:launchconfiguration:
SecurityGroups: [security-group-name]
IamInstanceProfile: aws-elasticbeanstalk-ec2-role
aws:elasticbeanstalk:managedactions:
PreferredStartTime: FRI:12:05
aws:elasticbeanstalk:managedactions:platformupdate:
UpdateLevel: minor
EnvironmentTier:
Type: Standard
Name: WebServer
AWSConfigurationTemplateVersion: 1.1.0.0
สรุป
ผมได้ลองใช้งานฟังก์ชัน Saved configuration แล้วรู้สึกว่ามีความสะดวกในการสร้าง Environment มาก เพราะมันจะบันทึกการตั้งค่าไว้ให้ทุกอย่างตามที่เราได้ตั้งค่าไว้ก่อนหน้านี้ ยิ่งไปกว่านั้นเรายังสามารถปรับเปลี่ยนสภาพ Environment ที่กำลังใช้งานอยู่ได้อีกด้วย
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
POP (Tinnakorn Maneewong) จากบริษัท Classmethod (Thailand) ครับ !